"""
这里面放页面的基础操作，比如：打开浏览器，点击：输入值，窗口的切换等
"""

from selenium.webdriver.remote.webelement import WebElement
from selenium.webdriver.support.wait import WebDriverWait


class Base:
    # 假设我们的浏览器驱动对象放到成员变量里
    def __init__(self, driver, url):
        self.__driver = driver  # 浏览器驱动对象
        self.__driver.get(url)  # 打开浏览器
        self.__driver.maximize_window()  # 最大化窗口

    # WebElement:告诉调用者，这个方法返回的是元素
    def __element_find_wait(self, locator) -> WebElement:  # locator 元组，包含两个元素，第一个是定位方式，第二个是定位值
        # self.__driver.find_element(*locator) # *locator 解包元组
        return WebDriverWait(self.__driver, 10).until(lambda x: x.find_element(*locator))

    # 往输入框输入值
    def element_send_keys(self, locator, value):
        self.__element_find_wait(locator).send_keys(value)

    # 点击
    def element_click(self, locator):
        self.__element_find_wait(locator).click()

    def get_url(self):
        return self.__driver.current_url

    def get_text(self, locator):
        return self.__element_find_wait(locator).text

    #  关闭浏览器
    def quit(self):
        self.__driver.quit()
